#!/usr/bin/env python
# -*-coding: utf-8 -*-
# Filename: editar_estado_intervencion.py

##
# Módulos del sistema
# Parte gráfica
try:
    import pygtk
    pygtk.require("2.0")
    import gtk
    import gtk.glade
except ImportError, error:
    print error
    print "Necesitas la librería gráficas gtk+pygtk"

##
# Modulos propios
try:
    from lib.funciones_utiles import close, armar_combo, descripcion_valida
    from lib.database import Clasificacion
    from gui.msj_retroalimentacion import MensajeDeError
except ImportError, error:
    print error
    print "Problemas en editar_estado_intervencion"

class EditarEstadoIntervencion:
    def __init__(self, padre, intervencion):
        self.gladefile = "gui/ghhp.glade"
        self.wTree = gtk.glade.XML(self.gladefile, "EditarEstadoIntervencion")
        self.padre = padre
        self.intervencion = intervencion
        self.window = self.wTree.get_widget("EditarEstadoIntervencion")
        print self.window
        self.window.resize(800, 300)
        self.un_dict = {"on_cancelbutton15_clicked": self.cambio_estado,
                "on_okbutton16_clicked": self.close}
        self.wTree.signal_autoconnect(self.un_dict)
        self.combo_estado = self.wTree.get_widget("combobox10")
        self.combo_estado.set_model(gtk.ListStore(str))
        self.combo_clasificacion = self.wTree.get_widget("combobox11")
        self.combo_clasificacion.set_model(gtk.ListStore(str))
        self.lista_clasificaciones = []
        self.lista_estados = []
        self.armar_combos()
        self.datos_comunes()

    def datos_comunes(self):
        # Estado actual de la intervencion
        # Descripcion del problema
        #self.wTree.get_widget()
        self.wTree.get_widget("textview8").get_buffer().set_text(
                self.intervencion.ticket.descripcion)
        
    def armar_combos(self):
        #!!!FIXME: estados de la intervencion
        estados = ['',"Trabajando", "Cuak!"]
        for i in estados:
            self.combo_estado.append_text(i)
            self.lista_estados.append(i)
        self.combo_estado.set_active(0)
        clasificaciones = Clasificacion.select()
        armar_combo(clasificaciones, self.combo_clasificacion,
                self.lista_clasificaciones)
        #Ponemos la clasificacion actual como clasificacion por defecto
        pos = self.lista_clasificaciones.index(
                self.intervencion.ticket.historial_de_clasificacion[-1].clasificacion)
        self.combo_clasificacion.set_active(pos)

    def cambio_estado(self, widget):
        estado, clasificacion, bandera = self.datos_validos()
        if bandera:
            #Registramos el cambio de estado
            print self.padre.padre
            #<gui.grupo_de_resolucion.GrupoDeResolucionGUI instance ...>
        else:
            if self.combo_estado.get_active_text():
                print "estado activo"
                pass
            else:
                error = ["Los siguientes datos no pueden ser nulos","-Observacion",
                        "-Estado"]
                msj = MensajeDeError("\n".join(error), self.window)
                msj.run()

    def datos_validos(self):
        descripcion = descripcion_valida(self.wTree.get_widget("textview12"))
        if descripcion:
            return 'estado', descripcion, True
        else:
            return '','',False

    def close(self, widget):
        close(self.window)

